home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok12
/
module
/
sortdemo.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
84 lines
(*---------------------------------------------------------------------------
:Program. SortDemo.mod
:Author. Bernd Preusing
:Address. Gerhardstr. 16 D-2200 Elmshorn
:Phone. 04121/22486
:Shortcut. [bep]
:Version. 1.0
:Date. 27-Oct-88
:Copyright. PD
:Language. Modula-II
:Translator. M2Amiga
:Imports. ArraySort [bep], Timer2 [bep]
:UpDate.
:Contents. demostrates Sort and usage of Timer2
:Remark.
---------------------------------------------------------------------------*)
MODULE SortDemo;
FROM SYSTEM IMPORT ADR,ADDRESS,BYTE,WORD;
FROM ArraySort IMPORT Sort;
FROM InOut IMPORT Write,WriteLn,WriteString,WriteInt;
FROM RandomNumber IMPORT RND;
FROM Timer2 IMPORT TimeVal,StartTime,StopTime;
CONST
Size = 10000;
VAR
x: ARRAY[1..Size] OF ADDRESS;
i: LONGCARD;
t: TimeVal;
(* simplest form of prLess: *)
PROCEDURE Less(a,b:ADDRESS):BOOLEAN;
BEGIN
RETURN a<b
END Less;
(* but could be:
PROCEDURE Less(a,b:ADDRESS): BOOLEAN;
VAR x1,x2: MyRecPtr;
BEGIN (* sorts on ascending income and descending age *)
x1:=CAST(MyRecPtr,a); x2:=CAST(MyRecPtr,b);
IF x1^.income < x2^.income THEN
RETURN TRUE
ELSIF x1^.income > x2^.income THEN
RETURN FALSE
ELSE (* same income *)
RETURN x1^.age > x2^.age
END;
END Less;
*)
PROCEDURE SortIt();
BEGIN
StartTime;
Sort(x,Size,Less);
StopTime(t);
WriteString("Ready."); WriteLn;
WriteInt(t.secs,10); Write('.');
WriteInt(t.micro DIV 1000,3); WriteString(' seconds.'); WriteLn;
(* check sort *)
FOR i:=1 TO Size-1 DO
IF x[i]>x[i+1] THEN HALT END;
END;
END SortIt;
BEGIN
WriteString("Calculating 10000 random numbers"); WriteLn;
FOR i:=1 TO Size DO x[i]:= RND(100000) END;
WriteString("Sorting 10000 random numbers"); WriteLn;
SortIt;
WriteString("Sorting 10000 already sorted numbers"); WriteLn;
SortIt; (* sorted array *)
FOR i:=1 TO Size DO x[i]:=Size-i END;
WriteString("Sorting 10000 inverse sorted numbers"); WriteLn;
SortIt;
WriteString('End Program'); WriteLn;
END SortDemo.